1. Field of the Invention
The invention concerns the display of information in a digital computer system and more particularly concerns the display of information about dependencies among entities in a very large set thereof.
2. Description of the Prior Art
A major problem for users of computer systems is that displays of information accessible through the computer system generally provide either a very high level view of the information or a very detailed view of the information, while the user often needs a view of the information which is at an intermediate level. For example, text files are represented in their entirety by icons or file names, and once a text file has been selected, a number of lines in the file can be displayed in a window. There is, however, no display of information which gives a reasonable idea of how the lines presently displayed in the window relate to the lines in the entire file. One consequence of the lack of such an intermediate level of display information is that it becomes difficult to use and understand available information.
The foregoing problem was addressed by the parent of the present patent application, which disclosed novel apparatus for displaying information about a very large number of entities and filtering the information so that a user of the information could see patterns which were of interest to him in it. The information display techniques of the parent have many applications, including scroll bars which better show the relationship between text in a window and the remainder of the text, television program selection interfaces which can information about a very large number of television programs, apparatus for displaying information about the history of lines of code in a large software system, all disclosed in the parent of the present patent application, apparatus for displaying information from an error log file, disclosed in U.S. Ser. No. 08/126,846, S. G. Eick, et al., Method and Apparatus for Graphical Analyzing a Log file, filed Sep. 24, 1993, and apparatus for displaying information about data base schemata, disclosed in U.S. Ser. No. 08/141,885, S. G. Eick, et al., Graphical Display of Relationships, filed Oct. 22, 1993.
In the present application, the techniques disclosed in the parent are applied to the problem of visualizing dependency relationships. In the preferred embodiment, the technique is used to visualize program slices. Informally stated, a program slice contains those components of a program that can potentially affect some component of interest. That component is termed the slice point. A program slice aids program understanding by focusing attention on a smaller and relevant subprogram. Program slicing as an automated technique for decomposing programs, was proposed by Mark Weiser in Weiser, M., "Programmers use slices when debugging", Communications of the ACM, Vol. 25(7) pp. 446-452 (July 1982) and Weiser, M., "Program slicing", IEEE Transactions on Software Engineering, Vol. SE-10(4) pp. 352-357 (July, 1984).
The usefulness of program slicing as a technique for studying programs is limited by the user interfaces presently employed to examine program slices. The current slicing interfaces are based on text browsers or syntax-directed editors. See for example Agrawal, H., DeMillo, R. A., and Spafford, E. H., "Debugging with dynamic slicing and backtracking", Software-Practice and Experience, Vol. 23(6) pp. 589-616 (June 1993) and Gallagher, K. B., "Surgeon's assistant limits side effects", IEEE Software Vol. 7 p. 64 (May 1990). In these interfaces, a slice is formed by selecting a statement or expression as the slice point and invoking a slice command. As a result, statements in the slice, i.e., those statements which potentially affect the component of interest, are highlighted or colored. If the slice crosses procedure or file boundaries, additional browsers may be opened or browser commands may be invoked to view other entities. Such interfaces do permit examination of a slice, but they burden the programmer with the task of determining the extent of a slice and determining the relationship of the slice to the remainder of the code. Moreover, navigation through a slice is cumbersome, especially when the slice crosses procedure and file boundaries, as is generally the case in large programs In point of fact, the present text-based interfaces do more to hide the slice than they do to disclose it. It is an object of the apparatus and techniques disclosed in the following to overcome these problems and make slicing into a truly useful technique for analyzing computer programs.